﻿Imports System.Resources
Imports System.Threading
Imports Biz
Imports BLL
Imports DevComponents.DotNetBar


Public Class ctrlNuevaPublicacion

    Private _llamador As frmMainMetro
    Private _bAlta As Boolean
    Private _oPublicacion As cPublicacion
    Private _RM As ResourceManager


    Public Sub SetIdioma()

        _RM = New ResourceManager("UI.Idiomas", System.Reflection.Assembly.GetExecutingAssembly)

        btnAceptar.Text = _RM.GetString("btnAceptar")
        btnCancelar.Text = _RM.GetString("btnCancelar")

        lblTituloTipoMedio.Text = _RM.GetString("strTipoDeMedio")
        lblTituloMedio.Text = _RM.GetString("strMedioDeBusqueda")
        lblTituloFechaPubli.Text = _RM.GetString("strFechaPublicacion")
        lblTituloDetalle.Text = _RM.GetString("strDetallesPublicacion")

        lblTituloForm.Text = _RM.GetString("strNuevaPublicacion")

    End Sub


    Public Property Llamador() As frmMainMetro
        Get
            Return _llamador
        End Get
        Set(value As frmMainMetro)
            _llamador = value
        End Set
    End Property

    Private Sub btnCancelar_Click(sender As Object, e As EventArgs) Handles btnCancelar.Click
        _llamador.CloseModalPanel(Me, DevComponents.DotNetBar.Controls.eSlideSide.Left)
    End Sub

    Private Function ValidarForm() As Boolean
        Dim bValido As Boolean = True

        If txtDetalle.Text.Trim = "" Then bValido = False
        If dateFechaPublicacion.SelectedDate = Date.MinValue Then bValido = False
        If advTreeTiposMedioBusqueda.SelectedNode Is Nothing Then bValido = False
        If advTreeMediosBusqueda.SelectedNode Is Nothing Then bValido = False

        ValidarForm = bValido

    End Function

    Public Sub MostrarParaAlta(oBusqueda As cBusqueda)
        _RM = New ResourceManager("UI.Idiomas", System.Reflection.Assembly.GetExecutingAssembly)

        lblTituloForm.Text = _RM.GetString("strNuevaPublicacion")
        lblMensajes.Text = ""

        _bAlta = True

        _oPublicacion = Nothing
        _oPublicacion = New cPublicacion
        _oPublicacion.Busq_Numero = oBusqueda.Busq_Numero

        LlenarForm(Nothing)

        txtDetalle.Focus()
    End Sub

    Public Sub MostrarParaEdicion(oPublicacion As cPublicacion)
        _RM = New ResourceManager("UI.Idiomas", System.Reflection.Assembly.GetExecutingAssembly)

        lblTituloForm.Text = _RM.GetString("strEditarPublicacion")
        lblMensajes.Text = ""

        _bAlta = False

        _oPublicacion = oPublicacion

        LlenarForm(oPublicacion)

        txtDetalle.Focus()
    End Sub

    Private Sub LlenarForm(oAux As cPublicacion)

        advTreeMediosBusqueda.Nodes.Clear()
        advTreeTiposMedioBusqueda.Nodes.Clear()

        CargarGrillaTiposMedios()

        If advTreeTiposMedioBusqueda.Nodes.Count > 0 Then advTreeTiposMedioBusqueda.SelectedIndex = 0

        If Not oAux Is Nothing Then
            PosicionarGrilla(advTreeTiposMedioBusqueda, oAux.oMedio_Busqueda.Tipo_Medio_Busqueda.TMedB_Codigo)
            PosicionarGrilla(advTreeMediosBusqueda, oAux.oMedio_Busqueda.MedB_Codigo)
            dateFechaPublicacion.SelectedDate = oAux.Pub_FechaPublicacion
            txtDetalle.Text = oAux.Pub_Detalle
        Else
            dateFechaPublicacion.SelectedDate = Date.MinValue
            txtDetalle.Text = ""
        End If

    End Sub
    
    Private Sub btnAceptar_Click(sender As Object, e As EventArgs) Handles btnAceptar.Click
        Dim oAux As cPublicacion


        If ValidarForm() Then
            If _bAlta Then
                oAux = New cPublicacion
                oAux.Busq_Numero = _oPublicacion.Busq_Numero
                oAux.Pub_Numero = 0
                oAux.Pub_FechaPublicacion = dateFechaPublicacion.SelectedDate
                oAux.oMedio_Busqueda.MedB_Codigo = Utils.Convert.ToInt16(advTreeMediosBusqueda.SelectedNode.Tag)
                oAux.Pub_Detalle = txtDetalle.Text

                Try
                    GestorPublicacion.Instance.Ingresar(oAux)
                    GestorBitacora.Instance.Loguear(New cBitacora_Usuario(AppCurrentState.UsuarioLogueado.Usu_Legajo, Utils.Enumeradores.Bitacora.PublicacionAlta))

                Catch ex As Excepciones.PublicacionFalloAlta
                    Main.ManejarExcepcion(ex)
                Catch ex As Exception
                    Main.ManejarExcepcion(ex)
                End Try
            Else
                oAux = New cPublicacion
                oAux.Busq_Numero = _oPublicacion.Busq_Numero
                oAux.Pub_Numero = _oPublicacion.Pub_Numero
                oAux.Pub_FechaPublicacion = dateFechaPublicacion.SelectedDate
                oAux.oMedio_Busqueda.MedB_Codigo = Utils.Convert.ToInt16(advTreeMediosBusqueda.SelectedNode.Tag)
                oAux.Pub_Detalle = txtDetalle.Text

                Try
                    GestorPublicacion.Instance.Editar(oAux)
                    GestorBitacora.Instance.Loguear(New cBitacora_Usuario(AppCurrentState.UsuarioLogueado.Usu_Legajo, Utils.Enumeradores.Bitacora.PublicacionModificacion))

                Catch ex As Excepciones.PublicacionFalloEditar
                    Main.ManejarExcepcion(ex)
                Catch ex As Exception
                    Main.ManejarExcepcion(ex)
                End Try

            End If


            _llamador.CloseModalPanel(Me, DevComponents.DotNetBar.Controls.eSlideSide.Left)
            _llamador.RefrescarGrillaPublicaciones()
        Else
            lblMensajes.Text = "Complete todos los datos requeridos..."
        End If

    End Sub

    Private Sub PosicionarGrilla(gridAux As DevComponents.AdvTree.AdvTree, sTag As String)
        Dim nodeAux As DevComponents.AdvTree.Node

        If gridAux.Nodes.Count > 0 Then
            For Each nodeAux In gridAux.Nodes
                If nodeAux.Tag = sTag Then
                    gridAux.SelectedNode = nodeAux
                End If
            Next
        End If

    End Sub

    Public Sub CargarGrillaTiposMedios()
        Dim oTipoMedioBusqueda As cTipo_Medio_Busqueda
        Dim colObjetos As Collection
        Dim oNode As DevComponents.AdvTree.Node


        advTreeTiposMedioBusqueda.BeginUpdate()

        advTreeTiposMedioBusqueda.Nodes.Clear()

        Try
            colObjetos = GestorTipo_Medio_Busqueda.Instance.Consultar

            If Not colObjetos Is Nothing Then

                For Each oTipoMedioBusqueda In colObjetos

                    oNode = New DevComponents.AdvTree.Node

                    oNode.Tag = oTipoMedioBusqueda.TMedB_Codigo
                    oNode.Text = oTipoMedioBusqueda.TMedB_Descrip

                    advTreeTiposMedioBusqueda.Nodes.Add(oNode)

                Next
            End If

        Catch ex As Excepciones.Tipo_Medio_BusquedaFalloConsultar
            Main.ManejarExcepcion(ex)
        Catch ex As Exception
            Main.ManejarExcepcion(ex)
        End Try

        advTreeTiposMedioBusqueda.EndUpdate()

        advTreeTiposMedioBusqueda.Refresh()

    End Sub

    Public Sub CargarGrillaMedios(iTMedB_Codigo As Int16)
        Dim oMedioBusqueda As cMedios_Busqueda
        Dim colObjetos As Collection
        Dim oNode As DevComponents.AdvTree.Node


        advTreeMediosBusqueda.BeginUpdate()

        advTreeMediosBusqueda.Nodes.Clear()

        Try
            colObjetos = GestorMedios_Busqueda.Instance.ConsultarPorTipo(iTMedB_Codigo)

            If Not colObjetos Is Nothing Then

                For Each oMedioBusqueda In colObjetos

                    oNode = New DevComponents.AdvTree.Node

                    oNode.Tag = oMedioBusqueda.MedB_Codigo
                    oNode.Text = oMedioBusqueda.MedB_Descrip

                    advTreeMediosBusqueda.Nodes.Add(oNode)

                Next
            End If

        Catch ex As Excepciones.Medios_BusquedaFalloConsultar
            Main.ManejarExcepcion(ex)
        Catch ex As Exception
            Main.ManejarExcepcion(ex)
        End Try

        advTreeMediosBusqueda.EndUpdate()

        advTreeMediosBusqueda.Refresh()

    End Sub

    Private Sub advTreeTiposMedioBusqueda_SelectedIndexChanged(sender As Object, e As EventArgs) Handles advTreeTiposMedioBusqueda.SelectedIndexChanged
        Dim iTMedB_Codigo As Int16

        advTreeMediosBusqueda.Nodes.Clear()

        If Not advTreeTiposMedioBusqueda.SelectedNode Is Nothing Then
            iTMedB_Codigo = Utils.Convert.ToInt16(advTreeTiposMedioBusqueda.SelectedNode.Tag)

            CargarGrillaMedios(iTMedB_Codigo)
        End If
    End Sub

End Class
